package TreeMap;

import com.sun.source.tree.Tree;

import javax.xml.transform.Source;
import java.io.DataOutput;
import java.io.ObjectOutputStream;
import java.util.StringJoiner;
import java.util.TreeMap;
import java.util.function.BiConsumer;

public class TreeMapDemo3 {
    public static void main(String[] args) {
        /*
         需求:
         字符串:"aababcabcdabcde"
         请统计字符串中每一个字符出现的次数,并按照以下格式输出
         输出结果:
         a(5) b(4) c(3) d(2) e(1)

         新的统计思想:利用map集合进行统计
         如果题目中没有要求对结果进行排序,默认使用HashMap
         如果题目中要求对结果进行排序,请使用TreeMap

         键:表示要统计的内容
         值:表示次数
         */
        //遍历字符串
        String str="aababcabcdabcde";
        TreeMap<Character,Integer> tm=new TreeMap();
        for(int i=0;i<str.length();i++)
        {
            //单个字符
            char c=str.charAt(i);
            //存在
            if(tm.containsKey(c))
            {
                int it=tm.get(c);
                it++;
                tm.put(c,it);
            }
            //不存在
            else{
                tm.put(c,1);
            }
        }
        System.out.println(tm);
        /*方法一
        StringBuilder s=new StringBuilder();
        tm.forEach(new BiConsumer<Character, Integer>() {
            @Override
            public void accept(Character character, Integer integer) {
                s.append(character).append("(").append(integer).append(")");
            }
        });
        System.out.println(s);*/
        //方法二:
            StringJoiner s=new StringJoiner("","","");
        tm.forEach(new BiConsumer<Character, Integer>() {
            @Override
            public void accept(Character character, Integer integer) {
                s.add(character+"").add("(").add(integer+"").add(")");
            }
        });
        System.out.println(s);
    }
}
